package com.smart.community.work.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 保洁记录视图对象
 * 
 * 严格按照《Java后端SpringBoot代码开发规范_重构版.md》VO规范实现：
 * - 使用@Data注解：自动生成getter/setter方法
 * - 完整注释：所有字段都有完整的JavaDoc注释
 * - 序列化支持：使用@JsonFormat注解格式化时间字段
 * - 字段命名：使用驼峰命名法
 * - 类型安全：使用具体的类型而不是Object
 * - 与数据库表结构完全对应
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 * @version 1.0.0
 */
@Data
@Schema(description = "保洁记录视图对象")
public class CleaningRecordVO {

    @Schema(description = "记录ID")
    private Long id;

    @Schema(description = "任务ID")
    private Long taskId;

    @Schema(description = "执行用户ID")
    private Long userId;

    @Schema(description = "执行用户姓名")
    private String userName;

    @Schema(description = "执行用户真实姓名")
    private String realName;

    @Schema(description = "完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime completionTime;

    @Schema(description = "清洁前照片（JSON字符串）")
    private String beforePhotos;

    @Schema(description = "清洁后照片（JSON字符串）")
    private String afterPhotos;

    @Schema(description = "使用工具")
    private String toolsUsed;

    @Schema(description = "质量评分（1-10分）")
    private BigDecimal qualityScore;

    @Schema(description = "检查人ID")
    private Long inspectorId;

    @Schema(description = "检查人姓名")
    private String inspectorName;

    @Schema(description = "检查人真实姓名")
    private String inspectorRealName;

    @Schema(description = "检查时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime inspectionTime;

    @Schema(description = "检查备注")
    private String inspectionRemark;

    @Schema(description = "状态：1-待检查，2-合格，3-不合格，4-需返工")
    private Integer status;

    @Schema(description = "状态描述")
    private String statusDesc;

    @Schema(description = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}